TiKV + Flink = 最佳人气流批一体库|TiDB Hackathon 2020 优秀项目分享
近日,由 TiDB 社区主办,专属于全球开发者与技术爱好者的顶级挑战赛事——TiDB Hackathon 2020 比赛圆满落幕。今年是 TiDB Hackathon 第四次举办,参赛队伍规模创历届之最,共有 45 支来自全球各地的队伍报名,首次实现全球联动。经过 2 天时间的极限挑战, 大赛涌现出不少令人激动的项目。为了让更多小伙伴了解这些参赛团队背后的故事, 我们开启了 TiDB Hackathon 2020 优秀项目分享系列,本篇文章将介绍 TiFlink 团队赛前幕后的精彩故事。
项目背景:当 TiKV 遇上 Flink
Java 客户端不支持抓取 CDC 日志,使用 TiCDC 需要通过 Kafka 转发,比较笨重和繁琐,延迟较高; Flink 集成的 Source 只支持批量读入,不支持批流结合(即先批量读入,后拉取 CDC 日志进行增量更新); Flink 集成的 Sink 尚不支持 TwoPhaseCommit 协议,正在开发中的版本只支持各个节点单独 TwoPhaseCommit ,不支持全局同步 TwoPhaseCommit 。
项目设计:TiFlink 流批一体库诞生了
为 TiKV 的 Java 客户端添加直接拉取 CDC 日志的功能,从而为实现批流一体数据处理的 Flink Source 创造条件; 为 Flink 开发 TiKV 兼容批读取和增量读取的 DynamicTableSource ,实现不同隔离级别的读取功能; 为 Flink 开发兼容 TiKV 事务模型并支持 TwoPhaseCommit 接口的 DynamicTableSink ,实现跨节点(切片,Region)一致的数据写入; 在上述组件的基础上,尝试实现 TiDB 上基于 Flink 的物化视图功能。
因为 Hackathon 走到一起的 TiFlink
令人惊讶的是,在比赛的短短几天时间里就能做出如此完备功能的 TiFlink,其 4 名队员可以说来自天南海北。队长张茄子来自全球领先的招聘网站 Indeed ,在日本做新项目孵化;乘蜗牛追乌龟本名徐哲,在大唐电信从事流媒体服务端研发,是多届天池大赛数据库比赛骨灰级获奖选手;jiangplus 在一家 AI 和算法驱动的药物研发公司 Xtalpi,从事内部云原生机器学习平台的构建工作;SteNicholas (蒋晓峰(子懿))则在阿里云 Apache Flink 做生态相关工作。若在平时,看似分属于不同行业不同地区的四人可能永远都不会产生任何联系,但出于同样对 Hackathon 的热爱,将他们串联到了一起。
Hackathon 对张茄子来说,最大的吸引是可以将自己的 idea 讲出来,同时能够认识到拥有各种各样 idea 的朋友,大家一起分享自己的想法是一件非常开心的事情。
SteNicholas 认为 Hackathon 带来的最大收获莫过于可以用自己熟悉的 Flink 或 TiDB 做任何想做的事情,只要能把它实现,就是一件特别 cool 的事情。
而对于队伍中年纪最小的徐哲而言, Hackathon 是一次开拓自己视野的好机会,不但可以看到其他队伍提出了一些自己从未想过的 idea ,还能逼着自己在很短的时间内完成一个非常有意思的点子,完成对自我的挑战。
与以前参加过的 Hackathon 不同,TiDB Hackathon 以「∞」作为本次大赛主题,参赛队伍只要有创新的 idea ,都可以拿出来参赛,在两天的编程里疯狂 coding,将自己的 idea 落地分享。对四人来说,这样的机会怎能错过?
在进行了一番探讨和交流后,张茄子和队友们决定将 TiKV + Flink 打造流批一体库作为自己的参赛项目。
今年由于疫情原因,大家都通过线上方式进行远程协作, 2 人负责 Flink 开发工作,2 人负责 TiDB 开发工作,每隔几个小时便会沟通项目进度。队长张茄子认为对远程协作来说保持一定频次的沟通至关重要,需要确保每个人的工作内容都朝着同一个方向,不至于最后走歪。
SteNicholas 作为 TiFlink 唯一到现场参赛的队员,还通过线上向其他队员做起了现场直播,引得大家直呼羡慕。对 Hackathon 来说不能一起面对面奋斗,始终是一件非常遗憾的事情,大家都表示如果明年继续参赛,希望还能够在现场相聚。
评委李钰老师是来自 Apache Flink & Apache HBase 的 PMC,出于职业敏感,对 Flink 这类生态结合的项目特别关注:“今年与 Flink 相结合的项目一共有三个,有通过 Flink 给 TiDB 做联邦查询的、有用 Flink 做物化视图的,但我觉得与 Flink 集成最深的还是 TiFlink 。比如他们做了一个原生的 Java 的 CDC,利用 Flink 本身机制实现物化视图的 Snapshot 的全局性。我个人觉得这些方面再往后走都具备落地的价值,这也是我最喜欢这个项目的原因。”
在李钰看来,如果能将 TiDB 联邦查询的项目与 TiFlink 项目结合在一起,对用户而言会产生更好的效果。现在有很多业务场景既有实时计算大数据相关的需求,又有数据库查询的需求,在这种情况下,将 TiDB+Flink 联合起来形成解决方案非常具有实用价值。例如, Flink 其实可以直接给 TiDB 提供访问 Hive 的能力。如果你既想查一个数据库里的数据,又想查一个 Hive 里的数据,就可以通过 TiDB 的这种标准 SQL 查询实现,屏蔽掉底层复杂的细节,这对于客户而言是非常具有现实价值的方案。
未来期待:找到初期用户
2 天的比赛时间非常有限,队员们希望在未来几个月找到一些初期用户,在用户反馈中不断完善 TiFlink 项目。队员们对此都很期待:“毕竟我们自己的想法和用户的想法还是有很多不一样的地方,比如说在一些选型、设计上的问题,我们自己没有办法解答,需要知道对用户来说哪种方式比较方便使用。理想情况下,我们当然希望这个项目可以变成 TiDB 的一部分 ,作为一个整体被 TiDB 的用户非常方便地使用起来。”
李钰老师特别补充道:“其实 Flink 也一直在提批流一体数仓,在用户有实时需求的情况下,批流一体数仓能够极大地节省整体 TCO 。类似的方案之前在阿里内部也有过一些技术实现,但 TiKV+Flink 是首次以开源解决方案的形式予以实现,这可以为广大用户提供更普惠的解决方案。”
除了 TiFlink ,本届大赛中也涌现出不少令人激动的项目,除了自己的队伍,还有哪些是最感兴趣的呢?几位队员明显有着自己的偏爱:
张茄子:“我比较喜欢的是几个大佬们做的那个 Index 的项目,非常具有想象力,把一些比较新的想法都融合进来了,我感觉这也是最有前景的项目之一。”
徐哲:“我最感兴趣的是 UDF 和 TiGraph 两个队伍的项目。UDF 在演示期间的展示非常酷, TiGraph 在展示期间有一个和原生的 TiDB 的性能对比,效果也非常好。他们的项目都是非常实用的想法,最后都获得了奖项,说明大家对他们也非常认可。”
Hackathon 建议:参赛,享受比赛
✨了解更多内容欢迎观看 TiFlink 团队精彩 Demo Show👇
TiDB Hackathon 2020 项目分享
通过 WASM 实现优雅高效的 TiDB UDF
当 TiDB 遇到图数据库
神器 TiDE 在手,一键快速上车 TiDB
大力出奇迹,GPU 加速 TiDB
基于 AWS 的一站式分布式数据库测试体系,简单易上手
中文文档规范化,zh.md 来帮你!
下一篇精彩项目分享,coming soon…